package class06

/*
	给出一组正整数数组，你从第0个数向最后一个数，
	每个数的值表示你从这个位置可以向右跳跃的最大长度
	计算如果以最少的跳跃次数跳到最后一个数
	思路：
		cur  step步内右边界
		next step+1步右边界
		step 当前走的步数

		遍历数组，每经过一个数
		1. 判断当前的位置为不可以到达
		2. step + 1
		3. 将cur更为next
		其他场景：
		1.a
			当前位置可达到，则继续更新next的最大范围，step不变
		最后返回 step 即可
*/
func Jump(arr []int) int {
	var cur, next, step int
	for i:=0; i<len(arr); i++ {
		if cur < i {
			step++
			cur = next
		}
		next = max(next, i+arr[i])
	}
	return step
}
